﻿function setup_grid()
{
    var offsW = 19;
    var offsH = 85;

    var w = $('#content').innerWidth() - offsW;
    var h = $('#content').innerHeight() - offsH;

    $('#list').setGridHeight(h);
    $('#list').setGridWidth(w, true);

    $('#con-info-table').width(w + 2); // border
}

var no_setup_row = false;

function first_row_sel(data)
{
    
    if(!no_setup_row)
    {
        var row = $('#list tr:nth-child(2)').attr('id');

        $("#list").jqGrid().setSelection(row, true);
        no_setup_row = true;
    }
}

function set_data(id)
{
    $.getJSON('req/con_rule.php?oper=info&cid=' + id, function (data)
    {

        $("[name=cont_id]").val(id);

        $('#next-key').html(data['next_enc_key']);

        try
        {
            $('#load-date').html(localeDateTime(mysqlTimeStampToDate(data['prog_load_time'])));
        }
        catch (e)
        {
            $('#load-date').html("Не загружен !");
        }

        var active_date_msg;

        if (data['prog_update_status'] == null)
        {
            active_data_msg = '<span style="color:red">Неизвестное состояние !</span>';
        }
        else if (data['prog_update_status'] == 0)
        {
      	  active_data_msg = 'Проект не загружен.';
        }
        else if (data['prog_update_status'] == 1)
        {
            active_data_msg = '<span style="color:red">Проект загружается.</span>';
        }
        else if (data['prog_update_status'] == 3)
        {
          try
          {
              active_data_msg = localeDateTime(mysqlTimeStampToDate(data['prog_update_time']));
          }
          catch (e)
          {
            active_data_msg = "Не активирован !";
          }
        }
        else if (data['prog_update_status'] == 4)
        {
            active_data_msg = '<span style="color:red">Не удалось загрузить проект !</span>';
        }
        else
        {
            active_data_msg = '<span style="color:red">Неизвестное состояние !</span>';
        }
        
        $('#active-date').html(active_data_msg);

        if (data['online'] == 1)
        {
            $('#online').html('<span style="color:green">Контроллер подключен.</span>');
        }
        else
        {
            $('#online').html('<span style="color:red">Нет связи.</span>');
        }

        $('#cur-key').html(data['enc_key']);

        $('#prev-key').html(data['prev_enc_key']);


        $("#load-button").button(
        {
            disabled: !(data['online'] == 1)
        });

        $("#set-time-button").button(
        {
            disabled: !(data['online'] == 1)
        })

    })
}

$(function ()
{

    $("#list").jqGrid(
    {
        url: 'req/con_list.php',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['№ контр.', 'Группа', 'Название СО'],
        colModel: [
        {
            name: 'c_id',
            index: 'c_id',
            width: 50,
            align: 'center',
            fixed: true
        }, {
            name: 'g_name',
            index: 'g_name',
            editable: true,
            edittype: 'select',
            editoptions: {
                dataUrl: 'req/grp_opt.php?type=opt'
            }
        }, {
            name: 'location',
            index: 'c_location',
            editable: true
        } ],
        sortname: 'c_id',
        sortorder: 'desc',
        viewrecords: true,

        loadComplete: first_row_sel,

        onSelectRow: function (id)
        {
            var c_id = $("#list").getCell(id, 0);
            set_data(c_id);

        }
    });

    $("#add-form").dialog(
    {
        autoOpen: false,
        height: 'auto',
        width: 'auto',
        modal: true,
        resizable: false,

        open: function (event, ui)
        {
            $('#group').load('req/grp_opt.php?type=opt', function (data)
            {
                $('#group').html(data);
            }

            );
        },
        buttons: {
            "Сохранить": function ()
            {
                var bValid = true;

                $('#post-form').submit();

            },
            "Отмена": function ()
            {
                $(this).dialog("close");
            }
        }
    });


    $("#add-button").button().click(function ()
    {
        $("[name=action]").val('_add');
        $("[name=location]").val('');

        $("#add-form").dialog({title: "Новый контроллер."});

        $("#add-form").dialog("open");
    });

    $("#edit-button").button().click(function ()
    {
        var gr = jQuery("#list").jqGrid('getGridParam', 'selrow');

        if (gr != null)
        {
            jQuery("#list").jqGrid('GridToForm', gr, '#add-form');

            $("[name=action]").val('_edit');

            $("#add-form").dialog({title: "Контроллер № "+gr+" ("+$("input[name=location]").val()+")"});

            $("#add-form").dialog("open");
        }
        else alert("Выберите контроллер для редактирования !");
    });

    $("#remove-button").button().click(function ()
    {
        var gr = $("#list").jqGrid('getGridParam', 'selrow');

        if (gr != null)
        {
            var data = $("#list").jqGrid().getRowData(gr);

            if (confirm("Удалить контроллер № "+data.c_id+" ("+data.location +")"))
            {
                $.post("req/con_edit.php", {oper:"del", id:data.c_id},
                            function(_data)
                            {
                                $("#list").jqGrid().trigger("reloadGrid");
                            }
                     );
            }
        }
        else
        {
            alert("Выберите контроллер для удаления !");
        }
    });

    $("#load-button").button({ disabled: true }).click(function ()
    {

        var c_id = $("[name=cont_id]").val();

        if (c_id != null)
        {
            var data = $("#list").jqGrid().getRowData(c_id);

            if (confirm("Загрузить программу в контроллер № "+data.c_id+" ("+data.location +") ?"))
            {
                $.get('req/con_rule.php?oper=cmd&cid=' + c_id + '&cmd=pload', function (data)
                {
                    if (data['error'] != null)
                    {
                        alert("Ошибка загрузки программы: " + data['error']);
                    }
                    else
                    {
                        alert("Загрузка программы стартовала !");
                    }
                })
            }
        }
    });


    $("#set-time-button").button({ disabled: true }).click(function ()
    {
        var c_id = $("[name=cont_id]").val();

        if (c_id != null)
        {
            var data = $("#list").jqGrid().getRowData(c_id);

            if (confirm("Синхронизировать с сервером время в контроллере: № "+data.c_id+" ("+data.location +") ?"))
            {
                $.get('req/con_rule.php?oper=cmd&cid=' + c_id + '&cmd=stime', function (data)
                {
                    if (data['error'] != null)
                    {
                        alert("Ошибка синхронизации времени: " + data['error']);
                    }
                    else
                    {
                        alert("Сихронизация времени стартовала !");
                    }
                })
            }
        }

    });

    $("#full-log-button").button().click(function ()
    {
        var c_id = $("[name=cont_id]").val();
        location.href = "log.php?back=cmap.php&cid="+c_id;
    });

    setup_grid();

    $(window).resize(setup_grid);

    setInterval(function ()
    {
        var c_id = $("[name=cont_id]").val();

        if (c_id != null)
        {
            set_data(c_id)
        }
    }, 10000)

});
